The lambda syntax is under discussion again at lambda-dev mail list, but this time, they're actively courting opinions.
The “strawman” syntax provided a temporary means to discuss the aspects of the implementation and details of how lambda and type inference would work in the Java language, but it was never intended as a permanent syntax. Now, four separate syntax variations have been proposed:
- Strawman:
#(arglist)(expr)and#(arglist){statements} - BGGA:
{ args -> statements } - SotL:
#{ args -> statements} - Redmond:
(args) -> { statements }
The poll also provides what using real-life expressions might be like with the above syntaxes:
Example of Strawman:
list.filter( #(Foo t)(t.length() > 3) )
.map( #(Foo t)(t.barCount) )
.max();
Example of BGGA:
list.filter( { Foo t -> t.length() > 3 } )
.map( { Foo t -> t.barCount } )
.max();
Example of SotL:
list.filter(#{ Foo t -> t.length() > 3 } )
.map(#{ Foo t -> t.barCount } )
.max();
Example of Redmond:
list.filter((Foo t) -> { t.length() > 3 } )
.map((Foo t) -> { t.barCount } )
.max();
Please see the original post at the lambda-dev mail list for more details on the proposals, and for how to respond to the survey.